System ক্লাস হল java.lang প্যাকেজের একটি গুরুত্বপূর্ণ ক্লাস, যা Java প্রোগ্রামে সিস্টেম-সম্পর্কিত বিভিন্ন কাজের জন্য সাহায্য করে। এটি স্ট্যাটিক মেথড সরবরাহ করে, যা Java প্রোগ্রামের পারফরম্যান্স এবং সিস্টেমের সঙ্গে যোগাযোগে সাহায্য করে।
System ক্লাসের মধ্যে গুরুত্বপূর্ণ মেথড ও ফিচার রয়েছে, যেগুলো বিভিন্ন ধরনের কার্যাবলী যেমন ইনপুট/আউটপুট পরিচালনা, সিস্টেম প্রপার্টি যাচাই, মেমরি ব্যবস্থাপনা, এবং রানটাইম সম্পর্কিত কার্যাবলী করার জন্য ব্যবহৃত হয়।
System ক্লাসের গুরুত্বপূর্ণ মেথড এবং ফিচারসমূহ:
1. System.out
System.outহল একটি PrintStream অবজেক্ট যা standard output stream হিসেবে কাজ করে, সাধারণত console তে আউটপুট প্রিন্ট করতে ব্যবহৃত হয়।- উদাহরণ:
System.out.println()ব্যবহার করে কনসোল এ আউটপুট প্রিন্ট করা হয়।
উদাহরণ:
System.out.println("Hello, World!");
2. System.in
System.inহল InputStream অবজেক্ট যা standard input stream হিসেবে কাজ করে, সাধারণত কীবোর্ড থেকে ইনপুট গ্রহণ করতে ব্যবহৃত হয়।
উদাহরণ:
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = sc.nextLine();
System.out.println("Hello, " + name);
}
}
3. System.err
System.errহল একটি PrintStream অবজেক্ট যা standard error stream হিসেবে কাজ করে। এটি সাধারণত ত্রুটি (error) বার্তা আউটপুট করতে ব্যবহৃত হয়।
উদাহরণ:
System.err.println("An error occurred.");
4. System.currentTimeMillis()
currentTimeMillis()মেথডটি সিস্টেমের বর্তমান সময়কে milliseconds হিসেবে প্রদান করে, যা Unix epoch (January 1, 1970) থেকে গণনা করা হয়।- এটি সাধারণত সময় পরিমাপ করার জন্য ব্যবহৃত হয়।
উদাহরণ:
long startTime = System.currentTimeMillis();
// Code to be measured for time
long endTime = System.currentTimeMillis();
System.out.println("Elapsed time: " + (endTime - startTime) + " milliseconds.");
5. System.nanoTime()
nanoTime()মেথডটি আরও সঠিক সময় পরিমাপের জন্য ব্যবহৃত হয়। এটি সিস্টেমের অভ্যন্তরীণ টাইমিং উৎস থেকে nanoseconds প্রদান করে। এটি মূলত relative time পরিমাপের জন্য ব্যবহৃত হয়।
উদাহরণ:
long startTime = System.nanoTime();
// Code to be measured for time
long endTime = System.nanoTime();
System.out.println("Elapsed time: " + (endTime - startTime) + " nanoseconds.");
6. System.arraycopy()
arraycopy()মেথডটি একটি অ্যারে থেকে অন্য একটি অ্যারেতে উপাদান কপি করার জন্য ব্যবহৃত হয়। এটি কপি অপারেশনকে দ্রুত করে তোলে এবং কমপ্লেক্সিটি কমায়।
উদাহরণ:
int[] source = {1, 2, 3, 4, 5};
int[] destination = new int[5];
System.arraycopy(source, 0, destination, 0, source.length);
System.out.println(Arrays.toString(destination)); // Output: [1, 2, 3, 4, 5]
7. System.gc()
gc()মেথডটি garbage collector কে চালু করার জন্য ব্যবহৃত হয়, তবে এটি জাভা গ্যারান্টি দেয় না যে গ্যারবেজ কালেকশন অবিলম্বে ঘটবে। এটি garbage collection এর জন্য Java Virtual Machine (JVM) কে সুপারিশ করে।
উদাহরণ:
System.gc(); // Suggests JVM to run garbage collection
8. System.getProperty(String key)
getProperty()মেথডটি সিস্টেম প্রপার্টি ফেরত দেয়, যেমন Java version, OS name, file separator ইত্যাদি।
উদাহরণ:
String os = System.getProperty("os.name");
System.out.println("Operating System: " + os);
9. System.setProperty(String key, String value)
setProperty()মেথডটি সিস্টেম প্রপার্টি সেট করতে ব্যবহৃত হয়।
উদাহরণ:
System.setProperty("user.language", "en");
String language = System.getProperty("user.language");
System.out.println("Language: " + language);
10. System.exit(int status)
exit()মেথডটি প্রোগ্রামটি বন্ধ করতে ব্যবহৃত হয়।statusপ্যারামিটারটি exit কোড নির্দেশ করে (0 সাধারণত সফল সমাপ্তি নির্দেশ করে)।
উদাহরণ:
System.exit(0); // Exit with a successful status
System ক্লাসের মূল বৈশিষ্ট্যসমূহ:
- Standard Input and Output:
System.in,System.out, এবংSystem.errস্ট্রিমগুলো ইনপুট এবং আউটপুট পরিচালনা করতে ব্যবহৃত হয়। - System Time:
currentTimeMillis()এবংnanoTime()ব্যবহৃত হয় সময় পরিমাপ করার জন্য। - Array Copying:
arraycopy()মেথড ব্যবহার করে অ্যারে কপি করা যায়। - Garbage Collection:
gc()মেথড ব্যবহার করে গ্যারবেজ কালেকশন সুপারিশ করা হয়। - System Properties:
getProperty()এবংsetProperty()ব্যবহৃত হয় সিস্টেম প্রপার্টি পড়তে এবং সেট করতে। - Exit Program:
exit()মেথড ব্যবহার করে প্রোগ্রামকে বন্ধ করা হয়।
ystem ক্লাস Java প্রোগ্রামে অনেক গুরুত্বপূর্ণ কাজ সম্পাদন করতে সাহায্য করে, যেমন আউটপুট স্ট্রিম, ইনপুট স্ট্রিম, সিস্টেম প্রপার্টি, সময় পরিমাপ, গ্যারবেজ কালেকশন এবং অ্যারে কপি করা। এটি Java অ্যাপ্লিকেশনগুলির জন্য একটি অপরিহার্য ক্লাস, যা সিস্টেম-সম্পর্কিত কার্যাবলী পরিচালনা করতে ব্যবহৃত হয়।
System ক্লাস Java-এর java.lang প্যাকেজের একটি গুরুত্বপূর্ণ ক্লাস যা মূলত Java Runtime Environment (JRE) এর সাথে সম্পর্কিত। এটি system-level কার্যাবলী এবং standard I/O অপারেশন পরিচালনার জন্য ব্যবহৃত হয়। System ক্লাসের মেথডগুলি মূলত স্ট্যাটিক (static) এবং এটি মূলত ইনপুট এবং আউটপুট স্ট্রিম, সিস্টেম প্রপার্টি, টাইম জোন, সিস্টেমের শাটডাউন এবং অন্যান্য অনেক কার্যাবলী পরিচালনা করে।
System ক্লাসের কোনও কনস্ট্রাক্টর নেই, এটি একটি utility class হিসেবে কাজ করে এবং static methods এবং static fields প্রদান করে।
System ক্লাসের ভূমিকা:
- Standard Input and Output Streams:
Systemক্লাস standard input (কী-বোর্ড) এবং standard output (স্ক্রীন) পরিচালনা করতে সহায়তা করে।- এটি
System.in,System.out, এবংSystem.errএর মতো স্ট্রিম ব্যবহারের সুযোগ দেয়, যা যথাক্রমে ইনপুট (যেমন,Scanner), আউটপুট এবং এরর স্ট্রিম হিসেবে ব্যবহৃত হয়।
- System Properties:
Systemক্লাস system properties এর সাথে কাজ করার জন্য ব্যবহার করা হয়, যেমন operating system name, Java version, user home directory ইত্যাদি।- এটি
System.getProperty()এবংSystem.setProperty()মেথড ব্যবহার করে সিস্টেম প্রপার্টি অ্যাক্সেস এবং সেট করা যায়।
- Environment Variables:
System.getenv()এর মাধ্যমে সিস্টেমের পরিবেশ ভেরিয়েবলগুলো (environment variables) পাওয়া যায়।
- Time and Timing:
Systemক্লাসটি সিস্টেমের সময়, টাইমস্ট্যাম্প, এবং টাইম মেজারমেন্টের জন্যও ব্যবহৃত হয়।System.currentTimeMillis()এবংSystem.nanoTime()মেথডের মাধ্যমে সময় মাপা যায়।
- Shutdown Hooks:
Systemক্লাসের মাধ্যমে শাটডাউন হুকও পরিচালনা করা যায়, যা একটি থ্রেড চালু করে যখন JVM বন্ধ হয়। এটি clean-up operations বা resource release করার জন্য ব্যবহৃত হয়।
- Array Copying:
Systemক্লাসে array copy করার জন্যSystem.arraycopy()মেথড রয়েছে, যা দ্রুত এবং দক্ষভাবে এক অ্যারে থেকে অন্য অ্যারেতে ডেটা কপি করতে ব্যবহৃত হয়।
System ক্লাসের মূল মেথডগুলো এবং তাদের ব্যবহার
1. System.out
System.outহল একটি PrintStream অবজেক্ট যা আউটপুট স্ট্রিমের জন্য ব্যবহৃত হয়, যেমনSystem.out.println()বাSystem.out.print()।উদাহরণ:
System.out.println("Hello, World!"); // Output: Hello, World!
2. System.in
System.inহল একটি InputStream যা ব্যবহারকারীর ইনপুট নেওয়ার জন্য ব্যবহৃত হয় (যেমনScannerক্লাসের মাধ্যমে)।উদাহরণ:
Scanner scanner = new Scanner(System.in); System.out.println("Enter your name:"); String name = scanner.nextLine(); System.out.println("Hello, " + name);
3. System.err
System.errহল একটি PrintStream যা এরর বা ত্রুটি বার্তা আউটপুট করতে ব্যবহৃত হয়।উদাহরণ:
System.err.println("Error: Something went wrong!");
4. System.currentTimeMillis()
এটি সিস্টেমের বর্তমান সময় (মিলিসেকেন্ডে) প্রদান করে। এটি সাধারণত performance measuring এর জন্য ব্যবহৃত হয়।
উদাহরণ:
long startTime = System.currentTimeMillis(); // Some operation long endTime = System.currentTimeMillis(); System.out.println("Execution time: " + (endTime - startTime) + " milliseconds");
5. System.nanoTime()
এটি একটি আরও সুনির্দিষ্ট টাইম মাপার মেথড, যা nanoseconds-এ সময় প্রদান করে। এটি সাধারণত performance testing বা benchmarking এর জন্য ব্যবহৃত হয়।
উদাহরণ:
long startNanoTime = System.nanoTime(); // Some operation long endNanoTime = System.nanoTime(); System.out.println("Execution time: " + (endNanoTime - startNanoTime) + " nanoseconds");
6. System.exit(int status)
এটি Java প্রোগ্রামটি বন্ধ করার জন্য ব্যবহৃত হয়। এটি সাধারণত status code সহ ব্যবহৃত হয় যেখানে 0 সফল সমাপ্তি নির্দেশ করে এবং অন্য যে কোনও মান ত্রুটির সংকেত দেয়।
উদাহরণ:
System.exit(0); // Exits the program with status code 0 (success)
7. System.setProperty(String key, String value)
এটি সিস্টেম প্রপার্টি সেট করতে ব্যবহৃত হয়। প্রপার্টি প্যারামিটার
keyএবংvalueদ্বারা সেট করা হয়।উদাহরণ:
System.setProperty("user.name", "JohnDoe"); System.out.println("User Name: " + System.getProperty("user.name"));
8. System.getProperty(String key)
এটি সিস্টেম প্রপার্টি পাওয়া জন্য ব্যবহৃত হয়, যেখানে
keyহল প্রপার্টির নাম।উদাহরণ:
String javaVersion = System.getProperty("java.version"); System.out.println("Java Version: " + javaVersion);
9. System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
এটি একটি অ্যারে থেকে অন্য একটি অ্যারেতে ডেটা কপি করার জন্য ব্যবহৃত হয়। এটি দ্রুত এবং দক্ষ।
উদাহরণ:
int[] source = {1, 2, 3, 4, 5}; int[] destination = new int[5]; System.arraycopy(source, 0, destination, 0, source.length); System.out.println(Arrays.toString(destination)); // Output: [1, 2, 3, 4, 5]
10. System.nanoTime()
- সিস্টেমের আরও নির্ভুল সময়ের জন্য ব্যবহৃত হয়। এটি প্রোগ্রাম চলাকালীন সময় পরিমাপ করতে ব্যবহৃত হয়, বিশেষ করে benchmarking এর জন্য।
System ক্লাসের অন্যান্য গুরুত্বপূর্ণ ব্যবহার:
Environment Variables:
System.getenv()এর মাধ্যমে আপনি পরিবেশ ভেরিয়েবলগুলি অ্যাক্সেস করতে পারেন।উদাহরণ:
String path = System.getenv("PATH"); System.out.println("System PATH: " + path);- Shutting Down the JVM:
System.exit()মেথড ব্যবহার করে আপনি JVM কে শাটডাউন করতে পারেন, যাতে প্রোগ্রামটি বন্ধ হয়। - Redirecting Output Streams: আপনি আউটপুট স্ট্রিমগুলিকে redirect করতে পারেন, যেমন ফাইল বা অন্য কোনও ডিভাইসের দিকে আউটপুট পাঠানো।
System ক্লাস Java.lang প্যাকেজের একটি অত্যন্ত গুরুত্বপূর্ণ ক্লাস, যা সিস্টেম-সম্পর্কিত কার্যাবলী পরিচালনা করতে ব্যবহৃত হয়। এটি আউটপুট স্ট্রিম, ইনপুট স্ট্রিম, সিস্টেম প্রপার্টি, টাইম মাপা, শাটডাউন হুক ইত্যাদি সিস্টেম সম্পর্কিত বিভিন্ন কার্যাবলী সরবরাহ করে। অধিকাংশ Java প্রোগ্রামেই এই ক্লাসটির কার্যাবলী ব্যবহার করা হয় এবং এটি প্রোগ্রামের ব্যবস্থাপনা ও অপারেশন সহজ করে তোলে।
Java java.lang প্যাকেজে তিনটি স্ট্যান্ডার্ড স্ট্রিম রয়েছে যেগুলি ইনপুট এবং আউটপুট অপারেশন পরিচালনার জন্য ব্যবহৃত হয়:
- System.in – স্ট্যান্ডার্ড ইনপুট স্ট্রিম
- System.out – স্ট্যান্ডার্ড আউটপুট স্ট্রিম
- System.err – স্ট্যান্ডার্ড এরর স্ট্রিম
এই স্ট্রিমগুলো মূলত I/O অপারেশন পরিচালনা করতে ব্যবহৃত হয় এবং Java I/O স্ট্রিমের সাথে সম্পর্কিত।
System.in: স্ট্যান্ডার্ড ইনপুট স্ট্রিম
System.in একটি InputStream যা স্ট্যান্ডার্ড ইনপুট (অর্থাৎ কীবোর্ড) থেকে ডেটা রিড করতে ব্যবহৃত হয়। এটি মূলত InputStream ক্লাসের একটি ইনস্ট্যান্স এবং আপনি এটিকে কীবোর্ড থেকে ইউজারের ইনপুট গ্রহণ করার জন্য ব্যবহার করতে পারেন।
System.in ব্যবহার করে আপনি কীবোর্ড থেকে ডেটা নিতে পারেন, কিন্তু এটি শুধুমাত্র বাইট ভিত্তিক ইনপুট দেয়, সুতরাং স্ট্রিং বা অন্যান্য প্রিমিটিভ টাইপে রূপান্তরের জন্য অতিরিক্ত কাজ প্রয়োজন।
উদাহরণ:
import java.io.*;
public class SystemInExample {
public static void main(String[] args) throws IOException {
System.out.println("Enter a character: ");
int input = System.in.read(); // Reads a single byte (character)
System.out.println("You entered: " + (char) input);
}
}
এই কোডটি কেবল একটি চরিত্র ইনপুট নেয় এবং সেটি প্রদর্শন করে। System.in.read() মেথড একবারে একটি বাইট ইনপুট নেয়।
System.out: স্ট্যান্ডার্ড আউটপুট স্ট্রিম
System.out হল একটি PrintStream অবজেক্ট, যা স্ট্যান্ডার্ড আউটপুট (অর্থাৎ কনসোল বা টার্মিনাল) এ ডেটা প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি সাধারণত System.out.println(), System.out.print(), System.out.printf() ইত্যাদি মেথডের মাধ্যমে কনসোলে ডেটা আউটপুট করতে ব্যবহৃত হয়।
System.out সাধারণত PrintStream ক্লাসের মাধ্যমে ব্যবহার হয়, যা বিভিন্ন ধরনের ডেটা যেমন স্ট্রিং, ইন্টিজার, ফ্লোট ইত্যাদি আউটপুট করতে পারে।
উদাহরণ:
public class SystemOutExample {
public static void main(String[] args) {
System.out.println("Hello, World!"); // Prints the string followed by a new line
System.out.print("This is a simple message."); // Prints without a new line
System.out.printf("The value of pi is approximately: %.2f", 3.14159); // Prints formatted output
}
}
Output:
Hello, World!
This is a simple message.The value of pi is approximately: 3.14
System.err: স্ট্যান্ডার্ড এরর স্ট্রিম
System.err হল একটি PrintStream যেটি স্ট্যান্ডার্ড এরর আউটপুট হিসেবে ব্যবহৃত হয়। সাধারণত ত্রুটি (error) বার্তা কনসোলে আউটপুট করতে System.err ব্যবহার করা হয়। এর মাধ্যমে আপনি প্রোগ্রামের ত্রুটিগুলো ভিন্নভাবে হ্যান্ডেল করতে পারেন, যেমন redirection বা বিশেষ ভাবে ত্রুটি বার্তা প্রদর্শন।
System.err মূলত System.out এর মতো কাজ করে, তবে এটি আউটপুটকে আলাদা ভাবে স্ট্রিম হিসেবে পরিচালনা করে এবং সাধারণত এটি ত্রুটি বা ব্যতিক্রমগুলির জন্য ব্যবহৃত হয়।
উদাহরণ:
public class SystemErrExample {
public static void main(String[] args) {
System.out.println("This is a normal message.");
System.err.println("This is an error message.");
}
}
Output:
This is a normal message.
This is an error message.
System.in, System.out, System.err এর মধ্যে পার্থক্য:
| স্ট্রিম | Purpose | ব্যবহৃত ক্লাস | সাধারণ ব্যবহৃত মেথড |
|---|---|---|---|
| System.in | কীবোর্ড থেকে ইনপুট নেয় | InputStream | read(), readLine() |
| System.out | কনসোলে আউটপুট দেয় | PrintStream | println(), print(), printf() |
| System.err | কনসোলে এরর বা ত্রুটি বার্তা দেয় | PrintStream | println(), print() |
কেন System.in, System.out এবং System.err ব্যবহার করা হয়?
- System.in ব্যবহার করে UI-less বা console-based অ্যাপ্লিকেশনগুলির জন্য ইনপুট গ্রহণ করা হয়।
- System.out ব্যবহার করে ডেটা আউটপুট, রিপোর্টিং, লগিং বা ব্যবহারকারীকে কনসোলে তথ্য প্রদর্শন করা হয়।
- System.err ব্যবহার করে ত্রুটি বার্তা বা এক্সসেপশন আউটপুট করা হয়, যাতে ব্যবহৃত ডেটা এবং ত্রুটি ডেটার মধ্যে স্পষ্ট পার্থক্য রাখা যায়। এটি বিশেষ করে ডিবাগিং এবং লগ ফাইলের জন্য গুরুত্বপূর্ণ।
নোট:
- System.out এবং System.err একই ধরনের
PrintStreamক্লাসের অবজেক্ট, তবে আলাদা স্ট্রিম হিসেবে কাজ করে, যেখানেSystem.outসাধারণ আউটপুট এবংSystem.errত্রুটি বা এরর আউটপুটের জন্য ব্যবহৃত হয়। - System.in সাধারণত InputStream ক্লাসের অধীনে কাজ করে এবং কীবোর্ড ইনপুট গ্রহণ করতে ব্যবহৃত হয়।
Java-তে System.in, System.out, এবং System.err স্ট্যান্ডার্ড ইনপুট এবং আউটপুট স্ট্রিমের জন্য ব্যবহৃত হয়। System.in কীবোর্ড থেকে ইনপুট নেয়, System.out কনসোলে আউটপুট দেয়, এবং System.err ত্রুটি বার্তা প্রদর্শন করার জন্য ব্যবহৃত হয়। এগুলো Java I/O এর ভিত্তি, যা কনসোল-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য অপরিহার্য।
System ক্লাসটি Java তে একটি utility class যা বিভিন্ন সিস্টেম স্তরের কার্যাবলী পরিচালনা করতে ব্যবহৃত হয়। এটি java.lang প্যাকেজের অন্তর্গত এবং এর মেথডগুলি সিস্টেম রিসোর্স যেমন টাইম, মেমরি, এনভায়রনমেন্ট ভেরিয়েবল ইত্যাদি ম্যানেজ করার জন্য ব্যবহৃত হয়।
নিচে System ক্লাসের কিছু গুরুত্বপূর্ণ মেথড এবং তাদের কার্যাবলী ব্যাখ্যা করা হলো:
1. currentTimeMillis()
currentTimeMillis() মেথডটি সিস্টেমের বর্তমান সময় milliseconds (মিলিসেকেন্ডে) হিসেবে রিটার্ন করে। এটি Unix epoch (January 1, 1970, 00:00:00 GMT) থেকে বর্তমানে পর্যন্ত কত মিলিসেকেন্ড পেরিয়েছে তা রিটার্ন করে।
ব্যবহার:
- সাধারণত, এই মেথডটি time measurement বা benchmarking এর জন্য ব্যবহৃত হয়।
সিনট্যাক্স:
public static long currentTimeMillis();
উদাহরণ:
public class SystemExample {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
// Some operation
for (int i = 0; i < 1000000; i++) {
// Just a loop for time measurement
}
long endTime = System.currentTimeMillis();
System.out.println("Time taken: " + (endTime - startTime) + " milliseconds.");
}
}
Output:
Time taken: 25 milliseconds.
2. exit()
exit(int status) মেথডটি Java program কে সম্পূর্ণভাবে বন্ধ করতে ব্যবহৃত হয়। এটি একটি exit status গ্রহণ করে, যা প্রোগ্রাম বন্ধ হওয়ার পর OS-এ রিটার্ন কোড হিসেবে ব্যবহৃত হয়। সাধারণত, 0 মানে হলো সফলভাবে প্রোগ্রাম শেষ হয়েছে এবং non-zero মানে প্রোগ্রামের কোনো ত্রুটি ঘটেছে।
ব্যবহার:
- এই মেথডটি সাধারণত error handling বা explicit termination এর জন্য ব্যবহৃত হয়।
সিনট্যাক্স:
public static void exit(int status);
উদাহরণ:
public class SystemExitExample {
public static void main(String[] args) {
System.out.println("Program is starting.");
// Exit with status 0 (successful)
System.exit(0);
// This line will not be executed because the program is terminated
System.out.println("This will not be printed.");
}
}
Output:
Program is starting.
Note: System.exit(0) মেথডটি প্রোগ্রাম সম্পূর্ণভাবে বন্ধ করে দেবে, এবং পরবর্তী কোডগুলো কার্যকর হবে না।
3. gc()
gc() মেথডটি Garbage Collection প্রক্রিয়া শুরু করার জন্য ব্যবহৃত হয়। এটি JVM কে অনুরোধ করে যাতে অপ্রয়োজনীয় অবজেক্টগুলো মেমরি থেকে মুছে ফেলা হয় (garbage collected)। তবে, এটি suggested ভাবে garbage collection শুরু করতে বলে, কিন্তু এটি কোনোভাবেই নিশ্চয়তা দেয় না যে জাভা গার্বেজ কलेक্টর এটি ঠিক সময়ে বা ঠিকভাবে করবে।
ব্যবহার:
- এই মেথডটি বিশেষ করে মেমরি ব্যবস্থাপনা বা সিস্টেমের মেমরি ব্যবহারের জন্য ব্যবহৃত হতে পারে।
সিনট্যাক্স:
public static void gc();
উদাহরণ:
public class SystemGcExample {
public static void main(String[] args) {
// Request garbage collection
System.gc();
System.out.println("Garbage collection has been requested.");
}
}
Output:
Garbage collection has been requested.
Note: এটি মেমরি সংগ্রহের প্রক্রিয়াকে শুরু করতে পরামর্শ দেয়, তবে গ্যারান্টি দেয় না যে এটি ঠিকমত কার্যকর হবে।
4. getenv()
getenv() মেথডটি সিস্টেমের environment variables থেকে একটি নির্দিষ্ট ভেরিয়েবল এর মান রিটার্ন করে। এটি একটি String হিসেবে রিটার্ন করে।
ব্যবহার:
- এই মেথডটি সাধারণত সিস্টেম বা প্রোগ্রামের কনফিগারেশন মান যাচাই করার জন্য ব্যবহৃত হয়, যেমন ফাইল পাথ বা অন্য যেকোনো পরিবেশ ভেরিয়েবল।
সিনট্যাক্স:
public static String getenv(String name);
উদাহরণ:
public class SystemGetenvExample {
public static void main(String[] args) {
// Get the value of the "PATH" environment variable
String pathValue = System.getenv("PATH");
System.out.println("PATH environment variable: " + pathValue);
}
}
Output:
PATH environment variable: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Note: getenv() মেথডটি সিস্টেমের পরিবেশ ভেরিয়েবল থেকে মান রিটার্ন করে। যদি ভেরিয়েবলটি না থাকে, তবে এটি null রিটার্ন করে।
System ক্লাস Java-এর একটি গুরুত্বপূর্ণ utility ক্লাস, যা বিভিন্ন সিস্টেম লেভেলের কার্যাবলী পরিচালনা করার জন্য ব্যবহৃত হয়। এর কিছু গুরুত্বপূর্ণ মেথড যেমন currentTimeMillis(), exit(), gc(), এবং getenv() বিভিন্ন ধরনের সিস্টেম-ভিত্তিক অপারেশন এবং ডেটা ম্যানিপুলেশন সরবরাহ করে, যেমন সময় পরিমাপ, প্রোগ্রাম টার্মিনেশন, গার্বেজ কোলেকশন এবং সিস্টেম এনভায়রনমেন্ট ভেরিয়েবল ব্যবস্থাপনা।
Java.lang প্যাকেজ হল Java এর একটি গুরুত্বপূর্ণ প্যাকেজ যা Java প্ল্যাটফর্মের বিভিন্ন মৌলিক ফিচার এবং ক্লাস সরবরাহ করে। এর মধ্যে রয়েছে System ক্লাস, যা বেশ কিছু সুবিধাজনক মেথড প্রদান করে, যার মাধ্যমে সিস্টেম সম্পর্কিত তথ্য পাওয়া এবং সিস্টেম প্রপার্টি পরিচালনা করা সম্ভব হয়।
System Properties হল Java অ্যাপ্লিকেশন বা Java Virtual Machine (JVM)-এর জন্য ব্যবহৃত সেটিংস বা কনফিগারেশন মান। এগুলি সাধারণত সিস্টেমের বিভিন্ন বৈশিষ্ট্য বা পরিবেশ সংক্রান্ত তথ্য ধারণ করে যেমন, ব্যবহারকারীর নাম, ডিফল্ট টাইম জোন, ফাইল পাথ, সিস্টেমের আর্কিটেকচার ইত্যাদি।
System Properties কী?
System Properties হল সিস্টেমের মধ্যে বিভিন্ন কনফিগারেশন বা ইনফরমেশন যা JVM বা Java অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়। এই প্রপার্টিগুলি বিভিন্ন তথ্য ধারণ করে যা প্রোগ্রাম চলার সময় পরিবেশের সাথে সম্পর্কিত।
Java-তে system properties এভাবে কাজ করে:
- প্রপার্টি মান সেট করা যায় বা পড়া যায়।
- প্রপার্টি সাধারণত স্ট্রিং (String) মান হিসেবে থাকে।
System Properties প্রাপ্তি এবং সেটিং:
Java-তে System.getProperty() এবং System.setProperty() মেথডের মাধ্যমে system properties পড়া এবং সেট করা হয়।
1. System.getProperty():
এটি সিস্টেমের একটি প্রপার্টির মান ফেরত দেয়। সাধারণত, আপনি এই মেথড ব্যবহার করে Java ভার্চুয়াল মেশিন (JVM) এবং সিস্টেম সম্পর্কে বিভিন্ন তথ্য জানতে পারবেন।
Syntax:
System.getProperty("propertyName");
উদাহরণ:
public class SystemPropertiesExample {
public static void main(String[] args) {
// Java সংস্করণ
String javaVersion = System.getProperty("java.version");
System.out.println("Java Version: " + javaVersion);
// ব্যবহারকারীর নাম
String userName = System.getProperty("user.name");
System.out.println("User Name: " + userName);
// ফাইল সিস্টেমের সীমানা
String fileSeparator = System.getProperty("file.separator");
System.out.println("File Separator: " + fileSeparator);
// Operating System এর নাম
String osName = System.getProperty("os.name");
System.out.println("Operating System: " + osName);
}
}
Output:
Java Version: 1.8.0_251
User Name: john
File Separator: \
Operating System: Windows 10
2. System.setProperty():
এই মেথডটি একটি নতুন system property সেট করার জন্য ব্যবহৃত হয়। এটি সাধারণত Java প্রোগ্রামের চলার সময় runtime-এ প্রপার্টি পরিবর্তন করতে ব্যবহার করা হয়।
Syntax:
System.setProperty("propertyName", "value");
উদাহরণ:
public class SetSystemPropertyExample {
public static void main(String[] args) {
// একটি সিস্টেম প্রপার্টি সেট করা
System.setProperty("myProperty", "Hello, World!");
// সেট করা প্রপার্টি পড়া
String myProperty = System.getProperty("myProperty");
System.out.println("myProperty: " + myProperty);
}
}
Output:
myProperty: Hello, World!
System Properties এর সাধারণ প্রপার্টি উদাহরণ:
Java প্ল্যাটফর্মে কিছু সাধারণ system properties এর নাম এবং তাদের মান দেখতে পারেন:
- os.name: অপারেটিং সিস্টেমের নাম।
- os.version: অপারেটিং সিস্টেমের সংস্করণ।
- os.arch: অপারেটিং সিস্টেমের আর্কিটেকচার (যেমন x86, x64)।
- java.version: Java Runtime Environment (JRE) এর সংস্করণ।
- java.vendor: Java এর বিক্রেতার নাম।
- user.name: ব্যবহারকারীর নাম।
- user.home: ব্যবহারকারীর হোম ডিরেক্টরি।
- user.dir: ব্যবহারকারীর বর্তমান ডিরেক্টরি।
- file.separator: ফাইল সিস্টেমের সীমানা (যেমন Windows এ '\' এবং UNIX এ '/')।
কমন প্রপার্টি গুলি ব্যবহারের উদাহরণ:
public class CommonSystemProperties {
public static void main(String[] args) {
// সিস্টেম প্রপার্টি দেখান
System.out.println("Operating System Name: " + System.getProperty("os.name"));
System.out.println("Java Version: " + System.getProperty("java.version"));
System.out.println("User Name: " + System.getProperty("user.name"));
System.out.println("User Home Directory: " + System.getProperty("user.home"));
System.out.println("File Separator: " + System.getProperty("file.separator"));
}
}
System Properties সেটিংস - VM Arguments ব্যবহার:
Java Virtual Machine (JVM) চালানোর সময় আপনি VM arguments (অথবা command line arguments) ব্যবহার করে সিস্টেম প্রপার্টি সেট করতে পারেন।
উদাহরণ:
java -DmyProperty=HelloWorld MyApp
এতে, myProperty সিস্টেম প্রপার্টি "HelloWorld" মান নিয়ে আপনার অ্যাপ্লিকেশনে প্রবেশ করবে এবং কোডে System.getProperty("myProperty") ব্যবহার করে এটি অ্যাক্সেস করা যাবে।
System Properties এর অন্যান্য ব্যবহার:
- Configuration Management: Java অ্যাপ্লিকেশনে কনফিগারেশন সেটিংস স্টোর এবং অ্যাক্সেস করতে System Properties ব্যবহার করা হয়।
- Environment Variables: কিছু ক্ষেত্রে, আপনি সিস্টেম পরিবেশের পরিবর্তনশীল (environment variables) বা প্রপার্টি অ্যাক্সেস করতে পারেন, যা অ্যাপ্লিকেশনে আচরণ পরিবর্তন করতে সাহায্য করে।
- File Paths: সিস্টেমের ফাইল পাথ এবং ফোল্ডারের সঠিক সীমানা জানতে System Properties ব্যবহার করা হয়।
সীমাবদ্ধতা:
- Security Considerations:
System.setProperty()ব্যবহারের সময় সতর্ক থাকতে হবে, কারণ এটি এমন সিস্টেম প্রপার্টি পরিবর্তন করতে সক্ষম যা অ্যাপ্লিকেশনের নিরাপত্তার জন্য ঝুঁকি তৈরি করতে পারে। - Persistence: যেহেতু
System.setProperty()শুধুমাত্র JVM চলাকালীন কার্যকর থাকে, তাই এটি স্থায়ীভাবে পরিবর্তন করবে না। সিস্টেম প্রপার্টি সেট করার জন্য স্থায়ী কনফিগারেশন ফাইল প্রয়োজন।
System Properties Java অ্যাপ্লিকেশনে সিস্টেমের পরিবেশগত তথ্য এবং কনফিগারেশন সেটিংস পরিচালনার জন্য গুরুত্বপূর্ণ একটি ফিচার। এটি System.getProperty() এবং System.setProperty() মেথড ব্যবহার করে পড়া এবং সেট করা যেতে পারে। Java অ্যাপ্লিকেশনকে কনফিগার এবং পরিবেশ অনুযায়ী আচরণ পরিবর্তন করতে এটি অত্যন্ত কার্যকর।
Read more